package edu.bu.cs673.superkids123.children.model.resources;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import javax.swing.ImageIcon;

/**
 * Children Resource
 * @author David Bardwell
 * @author Adam Phung
 * @author Harris Tracy
 * @author Joshua Stein
 * 
 * Notes: These are just string keys used to match to the correct
 *      resource in the XML files. Keys must be unique.
 */
public interface ChildrenResource {
        
        // Image file keys
        public String imageNumber0 = "imageNumber0";
        public String imageNumber1 = "imageNumber1";
        public String imageNumber2 = "imageNumber2";
        public String imageNumber3 = "imageNumber3";
        public String imageNumber4 = "imageNumber4";
        public String imageNumber5 = "imageNumber5";
        public String imageNumber6 = "imageNumber6";
        public String imageNumber7 = "imageNumber7";
        public String imageNumber8 = "imageNumber8";
        public String imageNumber9 = "imageNumber9";
        public String imageNumber10 = "imageNumber10";
        public String imageNumber11 = "imageNumber11";
        public String imageNumber12 = "imageNumber12";
    	public String imageNumber13 = "imageNumber13";
		public String imageNumber14 = "imageNumber14";
		public String imageNumber15 = "imageNumber15";
		public String imageNumber16 = "imageNumber16";
		public String imageNumber17 = "imageNumber17";
		public String imageNumber18 = "imageNumber18";
		public String imageNumber19 = "imageNumber19";
		public String imageNumber20 = "imageNumber20";

        public String plusSign = "plusSign";
        public String equalsSign = "equalsSign";
        public String minusSign = "minusSign";
        
        public String imageMatch1 = "imageMatch1";
        public String imageMatch2 = "imageMatch2";
        public String imageMatch3 = "imageMatch3";
        public String imageMatch4 = "imageMatch4";
        public String imageMatch5 = "imageMatch5";
        public String imageMatch6 = "imageMatch6";
        public String imageMatch7 = "imageMatch7";
        public String imageMatch8 = "imageMatch8";
        public String imageMatch9 = "imageMatch9";
        public String next = "next";
        
        // Glyph Icons
        public String imageIconSettings = "imageIconSettings";
        public String imageIconBack = "imageIconBack";
        public String imageIconX = "imageIconX";
        public String imageIconFolderOpen = "imageIconFolderOpen";
        
        // Planet Cute PNGs
//      public String image = "Brown Block.png";
        public String imageBoy = "imageBoy";
        public String imageGirlCat = "imageGirlCat";
        public String imageGirlHorn = "imageGirlHorn";
        public String imageGirlPink = "imageGirlPink";
        public String imageGirlPrincess = "imageGirlPrincess";
//      public String image = "Chest Closed.png";
//      public String image = "Chest Lid.png";
//      public String image = "Chest Open.png";
//      public String image = "Dirt Block.png";
//      public String image = "Door Tall Closed.png";
//      public String image = "Door Tall Open.png";
//      public String image = "Enemy Bug.png";
//      public String image = "Gem Blue.png";
//      public String image = "Gem Green.png";
//      public String image = "Gem Orange.png";
//      public String image = "Grass Block.png";
//      public String image = "Heart.png";
//      public String image = "Key.png";
//      public String image = "Plain Block.png";
//      public String image = "PlanetCuteShadowMockup.jpg";
//      public String image = "PlanetCuteShadowTest.png";
//      public String image = "Ramp East.png";
//      public String image = "Ramp North.png";
//      public String image = "Ramp South.png";
//      public String image = "Ramp West.png";
//      public String image = "Rock.png";
//      public String image = "Roof East.png";
//      public String image = "Roof North East.png";
//      public String image = "Roof North West.png";
//      public String image = "Roof North.png";
//      public String image = "Roof South East.png";
//      public String image = "Roof South West.png";
//      public String image = "Roof South.png";
//      public String image = "Roof West.png";
//      public String image = "Selector.png";
//      public String image = "Shadow East.png";
//      public String image = "Shadow North East.png";
//      public String image = "Shadow North West.png";
//      public String image = "Shadow North.png";
//      public String image = "Shadow Side West.png";
//      public String image = "Shadow South East.png";
//      public String image = "Shadow South West.png";
//      public String image = "Shadow South.png";
//      public String image = "Shadow West.png";
//      public String image = "SpeechBubble.png";
        public String imageStar = "imageStar";
//      public String image = "Stone Block Tall.png";
//      public String image = "Stone Block.png";
//      public String image = "Tree Short.png";
//      public String image = "Tree Tall.png";
//      public String image = "Tree Ugly.png";
//      public String image = "Wall Block Tall.png";
//      public String image = "Wall Block.png";
//      public String image = "Water Block.png";
//      public String image = "Window Tall.png";
//      public String image = "Wood Block.png";
        public String imageQuestionMark = "imageQuestionMark";

    	// Archery Game
    	public String imageField = "imageField";
    	public String imageTarget = "imageTarget";
    	public String imageCrosshair = "imageCrosshair";
    	
    	//Arithmatic Game
    	public String arithmaticGameBackground = "arithmaticGameBackground";
    	public String arithmaticGameFemaleBackground = "arithmaticGameFemaleBackground";
    	public String arithmaticGameMaleBackground = "arithmaticGameMaleBackground";
    	
    	//Click Game
    	public String clickGameBackground = "clickGameBackground";
    	//FanFair 
    	public String fanfairBackground = "fanfairBackground";
    	public String fanfairMonkeyBackground = "fanfairMonkeyBackground";

        // Encouragement images
        public String imageEncouragementSmile = "imageEncouragementSmile";
        public String imageEncouragementSun = "imageEncouragementSun";
        public String imageEncouragementStar = "imageEncouragementStar";
        public String imageEncouragementBeaver = "imageEncouragementBeaver";
        public String imageEncouragementFish = "imageEncouragementFish";
        public String imageEncouragementWorm = "imageEncouragementWorm";
        
        // Plaque
        public String imageWoodPlaque = "imageWoodPlaque";
        
        // Medal images - Larger image size
        public String imageBronzeMedal = "imageBronzeMedal";
        public String imageSilverMedal = "imageSilverMedal";
        public String imageGoldMedal = "imageGoldMedal";
        public String imageGoldRibbon = "imageGoldRibbon";
        
        // Medal icons - Small icon sized
        public String iconBronzeMedal = "iconBronzeMedal";
        public String iconSilverMedal = "iconSilverMedal";
        public String iconGoldMedal = "iconGoldMedal";
        public String iconGoldRibbon = "iconGoldRibbon";
        
        // Audio files
        public String audioNumber0 = "audioNumber0";
        public String audioNumber1 = "audioNumber1";
        public String audioNumber2 = "audioNumber2";
        public String audioNumber3 = "audioNumber3";
        public String audioNumber4 = "audioNumber4";
        public String audioNumber5 = "audioNumber5";
        public String audioNumber6 = "audioNumber6";
        public String audioNumber7 = "audioNumber7";
        public String audioNumber8 = "audioNumber8";
        public String audioNumber9 = "audioNumber9";
        public String audioNumber10 = "audioNumber10";
        public String audioNumber11 = "audioNumber11";
        public String audioNumber12 = "audioNumber12";
        public String audioNumber13 = "audioNumber13";
        public String audioNumber14 = "audioNumber14";
        public String audioNumber15 = "audioNumber15";
        public String audioNumber16 = "audioNumber16";
        public String audioNumber17 = "audioNumber17";
        public String audioNumber18 = "audioNumber18";
        public String audioNumber19 = "audioNumber19";
        public String audioNumber20 = "audioNumber20";
        public String audioEquals = "audioEquals";
        public String audioPlus = "audioPlus";
        public String audioMinus = "audioMinus";
        public String audioCorrect = "audioCorrect";
        public String audioTryAgain = "audioTryAgain";
        
        
        // Root resource path
        public String rootChildrenResourcePath = "/";
		public String background = "background";        
        
        public ImageIcon getImage(String imageId);
        
        public ImageIcon getScaledImage(String imageId, float scale);
        
        public ImageIcon getScaledImageByNumber(int imageNumber, float scale);
        
        public ImageIcon getScaledImageBySymbol(String imageSymbol, float scale);
        
        public byte[] getAudioContent(String audioId);
        
        public byte[] getAudioContentByNumber(int audioNumber);
        
        public byte[] getAudioContentBySymbol(String audioSymbol);
        
        public boolean loadAllResources();
        /**
         * Number Image Map
         * 
         * @author Joshua Stein
         *
         */
        public static final Map<Integer, String> NUMBER_IMAGE_MAP =
                        Collections.unmodifiableMap(new HashMap<Integer, String>()
                        {
                        {
                                put(0, ChildrenResource.imageNumber0);
                                put(1, ChildrenResource.imageNumber1);
                                put(2, ChildrenResource.imageNumber2);
                                put(3, ChildrenResource.imageNumber3);
                                put(4, ChildrenResource.imageNumber4);
                                put(5, ChildrenResource.imageNumber5);
                                put(6, ChildrenResource.imageNumber6);
                                put(7, ChildrenResource.imageNumber7);
                                put(8, ChildrenResource.imageNumber8);
                                put(9, ChildrenResource.imageNumber9);
                                put(10, ChildrenResource.imageNumber10);
                                put(11, ChildrenResource.imageNumber11);
                                put(12, ChildrenResource.imageNumber12);
                                put(13, ChildrenResource.imageNumber13);
                                put(14, ChildrenResource.imageNumber14);
                                put(15, ChildrenResource.imageNumber15);
                                put(16, ChildrenResource.imageNumber16);
                                put(17, ChildrenResource.imageNumber17);
                                put(18, ChildrenResource.imageNumber18);
                                put(19, ChildrenResource.imageNumber19);
                                put(20, ChildrenResource.imageNumber20);
                                put(-99, ChildrenResource.arithmaticGameBackground);
                        }
                        });
        
        public static final Map<String, String> SYMBOL_IMAGE_MAP =
                        Collections.unmodifiableMap(new HashMap<String, String>()
                        {
                        {
                                put("plus", ChildrenResource.plusSign);
                                put("equals", ChildrenResource.equalsSign);                                                     }
                        });
        
        public static final Map<Integer, String> NUMBER_AUDIO_MAP = 
                Collections.unmodifiableMap(new HashMap<Integer, String>() {
                {
                    	put(0, ChildrenResource.audioNumber0);
                        put(1, ChildrenResource.audioNumber1);
                        put(2, ChildrenResource.audioNumber2);
                        put(3, ChildrenResource.audioNumber3);
                        put(4, ChildrenResource.audioNumber4);
                        put(5, ChildrenResource.audioNumber5);
                        put(6, ChildrenResource.audioNumber6);
                        put(7, ChildrenResource.audioNumber7);
                        put(8, ChildrenResource.audioNumber8);
                        put(9, ChildrenResource.audioNumber9);
                        put(10, ChildrenResource.audioNumber10);
                        put(11, ChildrenResource.audioNumber11);
                        put(12, ChildrenResource.audioNumber12);
                        put(13, ChildrenResource.audioNumber13);
                        put(14, ChildrenResource.audioNumber14);
                        put(15, ChildrenResource.audioNumber15);
                        put(16, ChildrenResource.audioNumber16);
                        put(17, ChildrenResource.audioNumber17);
                        put(18, ChildrenResource.audioNumber18);
                        put(19, ChildrenResource.audioNumber19);
                        put(20, ChildrenResource.audioNumber20);
                }});
        
        public static final Map<String, String> SYMBOL_AUDIO_MAP = 
                        Collections.unmodifiableMap(new HashMap<String, String>() {
                        {
                                put("plus", ChildrenResource.audioPlus);
                                put("equals", ChildrenResource.audioEquals);                            
                        }});

}